/**
 * 测试完整服务项目初始化
 * 用于验证所有分类的服务项目是否正确初始化
 */

// 测试云函数调用
async function testCompleteServicesInit() {
  try {
    console.log('🚀 开始测试完整服务项目初始化...')
    
    // 1. 获取当前服务统计
    console.log('\n📊 获取当前服务统计...')
    const statsResult = await wx.cloud.callFunction({
      name: 'serviceManager',
      data: {
        action: 'getServiceStats'
      }
    })
    
    if (statsResult.result.success) {
      console.log('当前服务统计:', statsResult.result.data)
    }
    
    // 2. 强制重新初始化服务数据
    console.log('\n🔄 执行强制重新初始化...')
    const initResult = await wx.cloud.callFunction({
      name: 'serviceManager',
      data: {
        action: 'initServiceData',
        force: true
      }
    })
    
    if (initResult.result.success) {
      console.log('✅ 初始化成功:', initResult.result.message)
      console.log('📈 插入服务数量:', initResult.result.count)
    } else {
      console.error('❌ 初始化失败:', initResult.result.error)
      return
    }
    
    // 3. 验证各分类服务数量
    console.log('\n🔍 验证各分类服务数量...')
    const categories = [
      { key: 'sme_market', name: '中小市场', expected: 6 },
      { key: 'info_integration', name: '信息化集成', expected: 9 },
      { key: 'engineering', name: '工程施工', expected: 4 },
      { key: 'network_maintenance', name: '网络维护', expected: 5 },
      { key: 'smart_home', name: '智能家居', expected: 6 },
      { key: 'measurement', name: '计量检测', expected: 7 },
      { key: 'materials', name: '材料设备', expected: 2 },
      { key: 'construction_team', name: '施工队伍', expected: 2 },
      { key: 'qualification', name: '企业资质', expected: 2 },
      { key: 'case_sharing', name: '案例分享', expected: 2 }
    ]
    
    let totalActual = 0
    let allCorrect = true
    
    for (const category of categories) {
      const result = await wx.cloud.callFunction({
        name: 'serviceManager',
        data: {
          action: 'getServicesByCategory',
          categoryKey: category.key
        }
      })
      
      if (result.result.success) {
        const actual = result.result.data.length
        totalActual += actual
        const status = actual === category.expected ? '✅' : '❌'
        console.log(`${status} ${category.name}: ${actual}/${category.expected}`)
        
        if (actual !== category.expected) {
          allCorrect = false
        }
      } else {
        console.log(`❌ ${category.name}: 获取失败`)
        allCorrect = false
      }
    }
    
    // 4. 总结验证结果
    console.log('\n📋 验证总结:')
    console.log(`总服务数量: ${totalActual}/45`)
    console.log(`分类验证: ${allCorrect ? '✅ 全部正确' : '❌ 存在问题'}`)
    
    // 5. 获取更新后的服务统计
    console.log('\n📊 获取更新后服务统计...')
    const newStatsResult = await wx.cloud.callFunction({
      name: 'serviceManager',
      data: {
        action: 'getServiceStats'
      }
    })
    
    if (newStatsResult.result.success) {
      console.log('更新后服务统计:', newStatsResult.result.data)
    }
    
    console.log('\n🎉 测试完成!')
    
  } catch (error) {
    console.error('❌ 测试过程中发生错误:', error)
  }
}

// 测试特定分类的服务详情
async function testCategoryServices(categoryKey) {
  try {
    console.log(`\n🔍 测试分类 ${categoryKey} 的服务详情...`)
    
    const result = await wx.cloud.callFunction({
      name: 'serviceManager',
      data: {
        action: 'getServicesByCategory',
        categoryKey: categoryKey
      }
    })
    
    if (result.result.success) {
      const services = result.result.data
      console.log(`${categoryKey} 分类共有 ${services.length} 个服务:`)
      
      services.forEach((service, index) => {
        console.log(`${index + 1}. ${service.title} - ¥${service.price}/${service.unit}`)
      })
    } else {
      console.error(`获取 ${categoryKey} 分类服务失败:`, result.result.error)
    }
    
  } catch (error) {
    console.error(`测试 ${categoryKey} 分类时发生错误:`, error)
  }
}

// 导出测试函数
if (typeof module !== 'undefined' && module.exports) {
  module.exports = {
    testCompleteServicesInit,
    testCategoryServices
  }
}

// 如果在小程序环境中直接运行
if (typeof wx !== 'undefined') {
  // 可以在控制台调用这些函数进行测试
  console.log('测试函数已加载，可以调用:')
  console.log('- testCompleteServicesInit() // 完整初始化测试')
  console.log('- testCategoryServices("sme_market") // 测试特定分类')
} 